package acm.pta7;

import java.lang.reflect.Array;
import java.util.Arrays;
import java.util.Set;

public class 至多删除3个字符 {
    static int[] d =new int[2];
    public static int fun(StringBuilder str, int i, int rest, Set<String> set,int size){
        if (rest==0){
            System.out.println(Arrays.toString(d));
            return 1;
        }
        if (i>=str.length()){    //还有步子但不能走了
            return 0;
        }
        int res=0;
        d[2-rest]=i;
        int k = 1;
        for (; k <= rest; k++) {
            if (i-k<0){
                k=3;
                break;
            }
            if (str.charAt(i-k)==str.charAt(i)){
               break;
            }
        }
        if (size<=k){
            res+=fun(str,i+1,rest-1,set,size);   //删除i
        }
        res+=fun(str,i+1,rest,set,size);   //不删除i
        return res;
    }
    static {
        String str="ababcc";
//        System.out.println(fun(new StringBuilder(str),0,3,null));
        System.out.println(fun(new StringBuilder(str),0,2,null,2));
//        System.out.println(fun(new StringBuilder(str),0,1,null));
    }
//    public static int fun(){
//
//    }

    /**
     * 尝试每一个位置删除一个的情况，再尝试每个位置删除两个，最后尝试三个。
     * 什么时候会产生重复？
     *  在i位置删除 n个，和在i+1位置删除n个。删除的值是一样的。则会产生重复。
     */
    public static void main(String[] args) {

    }
    public static int fun(String str){
        int res=1;
        for (int j = 1; j <= 3; j++) {
            String pre="";
            for (int i = 0; i < str.length(); i++) {
                if (i+j>str.length()){
                    break;
                }
                String curr = str.substring(i, i + j);
                if (!curr.equals(pre)){
                    System.out.println(curr);
                    res++;
                    pre=curr;
                }
            }
        }
        return res;
    }
}
